<%@ page contentType="text/javascript" pageEncoding="UTF-8" %>
<%@ page import="util.*" %>
<%@ page import="entidades.*" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.HashMap" %>
// <script>

function ordenTrabajo_append(target)
	{
	var ot = ordenTrabajo_next();
	var formId = jQuery(target).closest('form').attr('id');
	var html = ordenTrabajo_html(ot);
	jQuery(target).append(html);
	ordenTrabajo_behaviors(formId, ot);
	ordenVenta_ocultarFormatos()
	}


function ordenTrabajo_remove(target)
	{
	var ot = ordenTrabajo_next() - 1;
	jQuery("#tr_orden_trabajo_" + ot).remove();
	}


function ordenTrabajo_next()
	{
	var max = 0;
	jQuery("fieldset.orden_trabajo").each(function()
		{
		var ot = parseInt(jQuery(this).attr("data-numero"), 10);
		if(ot > max) {max = ot;}
		});
	return max + 1;
	}

function ordenesTrabajo_nums()
	{
	var lista = "";
        jQuery("fieldset.orden_trabajo").each(function()
		{
		if(lista.length > 0) lista += ",";
		lista += jQuery(this).attr("data-numero");
		});
	return lista;
	}

function ordenesTrabajoExcedidas_nums()
	{
	var lista = "";
        jQuery("fieldset.orden_trabajo").each(function()
		{
                var ot = parseInt(jQuery(this).attr("data-numero"), 10);
                var fechaPrometida = jQuery(this).find("input[name='ot" + ot + "_fecha_inicial']").val();
                var fechaHoy = new Date();
                var year=fechaHoy.getYear();
                if (year < 1000)
                    year+=1900;
                var day=fechaHoy.getDay();
                var month=fechaHoy.getMonth()+1;
                if (month<10)
                    month="0"+month;
                var daym=fechaHoy.getDate();
                if (daym<10)
                    daym="0"+daym;
                var mifecha=daym+"/"+month+"/"+year;
                var res = 0;
                mifecha = convertirFechaHora(mifecha + " 00:00:00");
                fechaPrometida = convertirFechaHora(fechaPrometida + " 00:00:00");
                mifecha = (mifecha != null)? mifecha.getTime() : 0;
                fechaPrometida = (fechaPrometida != null)? fechaPrometida.getTime() : 0;
                res = fechaPrometida-mifecha;
                res = res/86400000;
                if (parseInt(res, 10) < 30){
                    if(lista.length > 0) lista += ",";
                    lista += jQuery(this).find("input[name='ot" + ot + "_identificador']").val();
                }
		});
	return lista;
	}



function ordenTrabajo_serializar(formId, ot)
	{
	// Verifico que la orden de trabajo exista.
	if(jQuery("#" + formId + " input[name='ot"+ot+"']").size() > 0)
		{
		// Leo todas las variables.
		var lineaId = ordenVenta_getLinea();
		var formatoId = jQuery("#" + formId + " select[name='ot"+ot+"_formato_"+lineaId+"']").val();
                var cantidad = Util.parseNumber(jQuery("#" + formId + " input[name='ot"+ot+"_cantidad']").val(), ',', '.');
                var fechaInicial = jQuery("#" + formId + " input[name='ot"+ot+"_fecha_inicial']").val();
                var ciclos = (jQuery("#" + formId + " select[name='ot"+ot+"_ciclo_id']").size() > 0)? jQuery("#" + formId + " select[name='ot"+ot+"_ciclo_id']").val() : '';
		var cicloUteco, cicloNewlong;
		if(ciclos.length > 0 && ciclos.indexOf('-') > 0)
			{
			cicloNewlong = ciclos.split('-')[0];
			cicloUteco = ciclos.split('-')[1];
			}
		else
			{
			cicloUteco = 0;
			cicloNewlong = 0;
			}

		// Serializo todos los datos.
		var ser = '{';
		ser += 'ot: ' + ot + ', ';
		ser += 'formato_id: ' + formatoId + ', ';
		ser += 'cantidad: ' + cantidad + ', ';
		ser += 'fecha_inicial: "' + fechaInicial + '", ';
		ser += 'ciclo_uteco_id: ' + cicloUteco + ', ';
		ser += 'ciclo_newlong_id: ' + cicloNewlong + '}';

		return ser;
		}
	else
		{ return '{ot: '+ot+'}'; }
	}

function ordenesTrabajo_serializar(formId)
	{

        var ser = "[";

	jQuery("fieldset.orden_trabajo").each(function(index)
		{
		var ot = parseInt(jQuery(this).attr("data-numero"), 10);
		if(index != 0) ser += ",";
		ser += ordenTrabajo_serializar(formId, ot);
		});

	ser += "]";
	return ser;
	}



function ordenTrabajo_validar(formId, ot)
	{
	var msj = '';

	// Verifico el campo 'cantidad'.
        var identificador = jQuery("#"+formId+" input[name='ot"+ot+"_identificador']").val();
        var ocurrenciasId = 0;
                    
    jQuery.ajax({
         url:    'ExistsWO?identificador='+identificador ,
         success: function(data){
                        ocurrenciasId=data;
                    },
         async:   false
    });          
    
        if(ocurrenciasId>0){
            msj += "La orden de trabajo "+identificador+" ya existe, ingrese otro identificador.";
        }
    	var cantidad = jQuery("#"+formId+" input[name='ot"+ot+"_cantidad']").val().replace(/\./g, '');
	if(cantidad == null || isNaN(parseInt(cantidad,10)) || parseInt(cantidad,10) == 0)
		{msj += "Debe ingresar la cantidad de bolsas que se fabricaran.<br/>";}

	if( parseInt(cantidad, 10) < ordenVenta_getCantidadMinima() )
		{msj += "La cantidad elegida no debe ser menor a la cantidad mÃƒÂ­nima de la linea.<br/>"}
        if(identificador == null || identificador.length == 0)
		{msj += "Debe ingresar un identificador para la Orden de Trabajo.<br/>";}

        // Verifico que se haya eligido una fecha.
	var cicloId = jQuery("#"+formId+" input[name='ot"+ot+"_ciclo_id']:checked").val();
	if(cicloId == null || cicloId.length == 0 || parseInt(cicloId, 10) < 0)
		{msj += "Debe elegir una fecha de entrega.<br/>";}
        if(msj.indexOf('<br/>') == 0)
		{ msj = msj.substring(5); }

	return msj;
	}

function ordenesTrabajo_validar(formId)
	{
	var msj = '';

	jQuery("fieldset.orden_trabajo").each(function(index)
		{
		var ot = parseInt(jQuery(this).attr("data-numero"), 10);
		var msjOt = ordenTrabajo_validar(formId, ot);
		if(msjOt.length > 0)
			{
			if(msj.length > 0) msj += "<br/>";
			msj += "<strong>Orden de trabajo " + ot + "</strong><br/>" + msjOt;
			}
		});

	return msj;
	}



function ordenTrabajo_validarParaEstimar(formId, ot)
	{
	// Verifico que el campo 'cantidad' no este vacio ni sea menor a la cantidad mÃƒÂ­nima de la linea.
	var msj = '';
        var cantidad = jQuery("#"+formId+" input[name='ot"+ot+"_cantidad']").val().replace(/\./g, '');
	var cantidadMinima = parseInt(jQuery("#"+formId+" select[name='linea'] option:selected").attr("data-cantidad_minima"), 10);
        var pais = jQuery("#"+formId+" select[name='pais_id'] option:selected").val();
        var lacaUv = jQuery("#"+formId+" select[name='laca_uv'] option:selected").val();
        var colores = jQuery("#"+formId+" select[name='cantidad_colores'] option:selected").val();
        var barniz = jQuery("#"+formId+" select[name='barniz'] option:selected").val();
        var interior = jQuery("#"+formId+" select[name='interior'] option:selected").val();
        var lineaId = ordenVenta_getLinea();
        var formato = jQuery("#" + formId + " select[name='ot"+ot+"_formato_"+lineaId+"']").val();
        if(cantidad == null || isNaN(parseInt(cantidad,10)) || parseInt(cantidad,10) == 0 || parseInt(cantidad,10) < cantidadMinima)
		{ msj +=  "<strong>Orden de trabajo " + ot + "</strong><br/> La cantidad ingresada no puede ser menor a la cantidad minima de la linea ("+cantidadMinima+").<br/>"; }
	if (pais == null || pais.length == 0)
            { msj += "<strong>Orden de venta</strong><br/>Debe ingresar un paÃƒÂ­s<br/>" ;}
        if (lacaUv == null || lacaUv.length == 0)
            { msj += "<strong>Orden de venta</strong><br/>Debe ingresar un Laca UV<br/>" ;}
         if (colores == null || colores.length == 0)
            { msj += "<strong>Orden de venta</strong><br/>Debe ingresar la cantidad de colores<br/>" ;}
         if (formato == null || formato.length == 0)
             { msj += "<strong>Orden de trabajo " + ot + "</strong><br/>Debe ingresar un formato<br/>" ;}
         if (lineaId == null || lineaId.length == 0)
             { msj += "<strong>Orden de venta</strong><br/>Debe ingresar una lÃƒÂ­nea<br/>" ;}
         if (barniz == null || barniz.length == 0)
             { msj += "<strong>Orden de venta</strong><br/>Debe ingresar si tiene barniz o no<br/>" ;}
         if (interior == null || interior.length == 0)
             { msj += "<strong>Orden de venta</strong><br/>Debe ingresar si tiene interior o no<br/>" ;}
	return msj;
	}

function ordenesTrabajo_validarParaEstimar(formId)
	{
	var msj = '';

	jQuery("fieldset.orden_trabajo").each(function(index)
		{
		var ot = parseInt(jQuery(this).attr("data-numero"), 10);
		var msjOt = ordenTrabajo_validarParaEstimar(formId, ot);
		if(msjOt.length > 0)
			{
			if(msj.length > 0) msj += "<br/><br/>";
			msj += msjOt;
			}
		});

	return msj;
	}



function ordenTrabajo_behaviors(formId, ot)
	{
	// El campo cantidad solo acepta valores numÃƒÂ©ricos.
	jQuery("#"+formId+" input[name='ot"+ot+"_cantidad']").seaBehavior( "integer", {"groupingCharacter" : '.', "minValue" : '0'}, {} );

	// Se eliminan las estimaciones cuando se cambia el formato o la cantidad.
	jQuery("#"+formId+" select.ot"+ot+"_formato").change(function()
		{jQuery("#ot"+ot+"_td_fechas").children().remove();});

	jQuery("#"+formId+" input[name='ot"+ot+"_cantidad']").change(function()
		{jQuery("#ot"+ot+"_td_fechas").children().remove();});
	}



function ordenTrabajo_html(ot)
	{
	var html = '';

  	html += '<tr id="tr_orden_trabajo_'+ot+'"><td><fieldset class="orden_trabajo" data-numero="'+ot+'">';
	html += '<legend>Orden de trabajo '+ot+'</legend>';
	html += '<input type="hidden" name="ot'+ot+'" value="true"/>';
	html += '<table style="width:100%;">';

	html += '<tr>';
	html += '<td class="label">Work order:</td>';
	html += '<td class="input"><input type="text" name="ot'+ot+'_identificador" value=""/></td>';
	html += '</tr>';
	html += '<tr>';
	html += '<td class="label">Formato:</td>';
	html += '<td class="input">';
	<%
	List<Linea> lineas = Linea.listar();
	List<Formato> formatos = Formato.listar();
	    for(int l=0; l<lineas.size(); l++)
		{
		%> html += '<select name="ot'+ot+'_formato_<%= lineas.get(l).getId() %>" class="formato ot'+ot+'_formato" data-lineaId="<%= lineas.get(l).getId() %>">';  html += '<option value="">Seleccionar</option>'; <%
                   for(int i=0; i<formatos.size(); i++)
			{
			if(formatos.get(i).getLineaId() == lineas.get(l).getId() && formatos.get(i).isActivo())
				{ %>
				html += '<option value="<%= formatos.get(i).getId() %>" data-desarrollo="<%= formatos.get(i).getDesarrollo() %>"><%= formatos.get(i).getDimensiones().getDescriptor().replace("'","\\'") %></option>';
				<% }
			}
		%>html += '</select>'; <%
		} %>
	html += '<td class="label">Cantidad:</td>';
	html += '<td class="input"><input type="text" name="ot'+ot+'_cantidad" size="15" value=""/></td>';
	html += '</tr><tr>';
        html += '<tr><td class="label">Solo impresión:</td>';
	html += '<td class="input"><input type="checkbox" name="solo_impresion" value="value"/>';
	html += '</tr>';
        html += '<td class="label">Fecha prometida:<input type="hidden" name="ot'+ot+'_fecha_inicial" value=""/></td>';
	html += '<td class="input fechas_posibles" id="ot'+ot+'_td_fechas" colspan="3"></td></tr>';

	html += '</table></fieldset></td>';
	html += '</tr>';

	return html;
	}

function ordenTrabajo_appendFechasPosibles(formId, ot, fechas)
	{
	// Verifico si no se selecciono ya una fecha.
 	if(jQuery("#" + formId + " input[name='ot"+ot+"_ciclo_id']:checked").size() <= 0)
		{
		// Elimino las fechas cargadas anteriormente.
		jQuery("#ot"+ot+"_td_fechas").children().remove();
		// Agrego el codigo html.
		var html = "<div>";
		for(var i=0; i<5; i++)
			{
			if (fechas[i] != null){
                        html += '<input type="radio" name="ot'+ot+'_ciclo_id" value="'+fechas[i].cicloNewlongId+'-'+fechas[i].cicloUtecoId+'" fecha="'+ fechas[i].fechaPrometida +'"/>'
			// html += (data.fechas[i].autorizar)? '<span class="requiere_autorizar">' : '<span>';
			if (jQuery("#" + formId + " input[name='solo_impresion']:checked").size() > 0){
                             html += ' ' + fechas[i].fechaPrometida + ' - '
				 + 'Disponible: ' + formatoNumero(fechas[i].cantidadDisponible) + ' (' + fechas[i].porcentajeDisponible + '%)';
                              html += '</span><br/>';
                        }else{

                                html += ' ' + fechas[i].fechaPrometida + ' - '
				 + 'Disponible: ' + formatoNumero(fechas[i].cantidadDisponible) + ' (' + fechas[i].porcentajeDisponible + '%)';
                               html += '</span><br/>';
                             }
                       }
                    }
                html += '<a href="#" id="button_mostrar_todo_' + ot +'"><img src="icon/plus.png" alt="" title="Ver todo"/> <span style="position:relative; bottom:3px;">Ver todo</span></a>'
                html += "</div>";
		jQuery("#ot"+ot+"_td_fechas").append(html);
                 jQuery("#button_mostrar_todo_" + ot).click(function()
		{
			jQuery("#ot"+ot+"_td_fechas").children().remove();
		// Agrego el codigo html.
		var html = "<div>";
		for(var i=0; i<fechas.length; i++)
			{
			html += '<input type="radio" name="ot'+ot+'_ciclo_id" value="'+fechas[i].cicloNewlongId+'-'+fechas[i].cicloUtecoId+'" fecha="'+ fechas[i].fechaPrometida +'"/>'
			// html += (data.fechas[i].autorizar)? '<span class="requiere_autorizar">' : '<span>';
			if (jQuery("#" + formId + " input[name='solo_impresion']:checked").size() > 0){
                             html += ' ' +fechas[i].fechaPrometida + ' - '
				 + 'Disponible: ' + formatoNumero(fechas[i].cantidadDisponible) + ' (' + fechas[i].porcentajeDisponible + '%)';
                              html += '</span><br/>';
                        }else{
                             html += ' ' + fechas[i].fechaPrometida + ' - '
				 + 'Disponible: ' + formatoNumero(fechas[i].cantidadDisponible) + ' (' + fechas[i].porcentajeDisponible + '%)';
                               html += '</span><br/>';
                        }
                    }
                html += "</div>";
		jQuery("#ot"+ot+"_td_fechas").append(html);
                jQuery("#"+formId+" input[name='ot"+ot+"_ciclo_id']").change(function()
			{
		        if(jQuery(this).attr("checked"))
				{
				var fechaInicial = jQuery(this).attr("fecha");
				jQuery("#"+formId+" input[name='ot"+ot+"_fecha_inicial']").val(fechaInicial);
				}
			});
                return false;
		});

		// Cada vez que se seleciona una fecha, se actualiza el valor del campo 'fecha_inicial'.
                jQuery("#"+formId+" input[name='ot"+ot+"_ciclo_id']").change(function()
			{
			if(jQuery(this).attr("checked"))
				{
				var fechaInicial = jQuery(this).attr("fecha");
				jQuery("#"+formId+" input[name='ot"+ot+"_fecha_inicial']").val(fechaInicial);
				}
			});
		}





	}

// </script>